אני מריץ דפים בAJAX שמשתמשים ב"לונג".
והמטרה שלי היא לזהות כשאר הדף מחזיר שגיאת שרת למשל עקב חיבור לאינטרניט או בעיות קליטה שונות
אך הבעיה היא שכאשר ניסיתי להשתמש בSTATUSCODE הוא לא החזיר לי שום שגיאה אלא פעל כרגיל
if(xmlhttp.status>499)alert("dead");

וגם כאן לא התקבלה שום התראת DEAD

ישנה איזו שהיא דרך לזהות כאשר הדף מאבד את התקשרות ,בצד הלקוח (JS)?

5 תשובות

avatar ענה ldbrgr ב 18 ליוני 2013 #

אתה גם צריך לבדוק את הסטטוס של הבקשה, לראות שהיא הושלמה.
או בקוד קצר:

if(xmlhttp.readyState==4 && xmlhttp.status>499) {
  alert("dead");
}


ובכללי יש הרבה יותר סטטוסים מ500..
אז תבדוק גם אותם.. AKA:

if(xmlhttp.readyState==4 && xmlhttp.status != 200) {
  alert("dead");
}


פעם הבאה תקרא תיעוד (documentation) של פונקיות, זה יעזור לך מאוד ויחסוך את זמן ההמתנה לתשובות..

avatar ענה itamarhadad ב 19 ליוני 2013 #

אני מחפש שגיאות שרת מיכיוון ושגיאות 400 של קבצים ו300 של כיוונון מחדש לא יופיעו לי
אבל שגיאות 500+ עלולים להופיע בסבירות גבוהה מאוד.

גם כשהדף מת כביכול הוא עדיין נכנס לתוך הIF של ה200 כלומר הסטטוס שלו לא משתנה בכלל

if(xmlhttp.readyState==4&&xmlhttp.status==200)

ואז הוא מחזיר ERROR בJS אחרי שהוא בפנים

avatar ענה ldbrgr ב 19 ליוני 2013 #

תעלה את כל הסקריפט שלך, הבעיה היא לא בתנאי.

avatar ענה itamarhadad ב 19 ליוני 2013 #

xmlhttp.onreadystatechange=function(){
if(xmlhttp.readyState==4&&xmlhttp.status>499)alert("dead");
else if(xmlhttp.readyState==4&&xmlhttp.status==200)alert();
}

avatar ענה ldbrgr ב 19 ליוני 2013 #

xmlhttp.onreadystatechange = function () {
    try {
        if (xmlhttp.readyState == 4) {
            if (xmlhttp.status == 200) {
                // all good..
            } else if (xmlhttp.status > 499) {
                alert("dead");
            }
        }
    } catch (e) {
        console.log(e);
    }
}

בהצלחה!